<?php
/**
 * Класс объединяет мини-функции (хелперы), помогающие при отладки кода.
 * @since Пятница, 8 Май 2011
 * @version 1.1 Пятница, 13 Май 2011
 * @author Акулов Денис <dakulov@gmail.com> Пятница, 13 Май 2011
 */
class Helper_Debugging{
    /**
     * Форматированный вывод списка переменных
     * @param mix $data
     * @param mix ...
     */
    public static function printRich($data){
        $args = func_get_args();
        foreach ($args as $data){
            print '<pre style="background-color:lightgray;">';
            if(is_array($data) || is_object($data)){
                $print = self::printInVariable($data);
                $print = preg_replace('#(^.*\\n)#iU', '<b style="color:red;">$1</b>', $print);
                $print = preg_replace('#(\[.*\])#iU', '<span style="color:red;">$1</span>', $print);
                $print = preg_replace('#=>\s(.*\\n)#iU', '=> <span style="color:blue;">$1</span>', $print);
                $print = str_replace('(', '<b>(</b>', $print);
                $print = str_replace(')', '<b>)</b>', $print);
                $print = str_replace('[', '<b>[</b>', $print);
                $print = str_replace(']', '<b>]</b>', $print);
                $print = str_replace('=>', '<b>=></b>', $print);
                print $print;
            }else{
                var_dump($data);
            }
            print '</pre>';
        }
    }

    public static function printToVar($data){
        ob_start();
        if(is_array($data) || is_object($data)){
            print_r($data);
        }else{
            var_dump($data);
        }
        $return = ob_get_contents();
        ob_end_clean();
        return $return;
    }
}